package com.scm.biz.dao;

import java.util.List;
import java.util.Map;

import com.scm.biz.bean.Customer;
import com.scm.biz.query.customer.CustomerQuery;
import com.scm.biz.result.CustomerResult;

public interface CustomerDao{
	
	/**
	 * 根据ID查询客户
	 * @param id 客户ID
	 * @return 客户类的查询结果类
	 */
	CustomerResult selectById(int id);
	/**
	 * 根据参数，查询客户列表
	 * @param customerQuery 查询参数
	 * @return 客户类的查询结果类集合
	 */
	List<CustomerResult> selectList(CustomerQuery customerQuery);
	/**
	 * 根据参数，查询记录数量
	 * @param customerQuery 查询参数
	 * @return 记录数
	 */
	Integer selectTotalByQuery(CustomerQuery customerQuery);
	
	/**
	 * 保存客户信息
	 * @param customer 客户对象
	 * @return 插入数量
	 */
	int insert(Customer customer);
	
	/**
	 * 更新客户信息
	 * @param customer 客户对象
	 * @return 更新数量
	 */
	int updateById(Customer customer);
	
	/**
	 * 根据客户ID，删除客户信息
	 * @param id 客户ID
	 * @return 删除的记录数
	 */
	int deleteById(int id);
	
	/**
	 * 根据名称查询客户
	 * @param fullname 客户名
	 * @return
	 */
	int selectByFullname(Map<String,Object> map);
	
	/**
	 * 根据简称查询客户
	 * @param abbreviation
	 * @return
	 */
	int selectByAbbreviation(Map<String,Object> map);
	
	/**
	 * 取得客户的ID和全称
	 * @return
	 */
	List<Map<String,Object>> getAllCustomer();
	
	/**
	 * 根据名称模糊查询客户
	 * @param name
	 * @return
	 */
	List<Map<String,Object>> getCustomerByName(String name);

	List<Customer> selectAll();

	
	/**
	 * 查询记录数量
	 * @return 记录数
	 */
	Integer selectTotal();
	
	/**
	 * 查询签约客户数
	 * @return
	 */
	int selectSignedCustomerCount();
	
	Customer selectByPrimaryKey(Integer id);
	
}
